package com.cal.calonecal.service;

import com.cal.calonecal.common.Response;
import com.cal.calonecal.pojo.dto.CreateExamDTO;
import com.cal.calonecal.pojo.dto.ExamDTO;
import com.cal.calonecal.pojo.dto.ExamSubmitDTO;
import com.cal.calonecal.pojo.vo.EquationVO;
import com.cal.calonecal.pojo.vo.ExamVO;
import com.cal.calonecal.pojo.vo.JudgeResultVO;
import com.cal.calonecal.pojo.vo.UserProblemVO;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.concurrent.CompletableFuture;

/**
 * @author 76004
 * @apiNote
 * @date 2023/5/10 23:55
 */

public interface IExamService {

    public CompletableFuture<Response<JudgeResultVO>> judge(ExamSubmitDTO problemSubmitDTO);

    public Response<ExamVO> createExam(CreateExamDTO createExamDTO);

    public Response<List<UserProblemVO>>getUserProblem(HttpServletRequest httpServletRequest);

    public Response<ExamVO> practiceAnotherExam(ExamDTO examDTO);

    public Response<List<EquationVO>> getEquation(Long eid);

    public void download(HttpServletResponse response, Integer examId);

    public Response<List<EquationVO>>startExam(Long eid, HttpServletRequest httpServletRequest);

    public Response<Void>signUp(Long eid, HttpServletRequest httpServletRequest);

    public Response<List<ExamVO>>getExamList(Integer pageNum, Integer pageSize, Long classId);
}
